home *** CD-ROM | disk | FTP | other *** search
/ SGI Developer Toolbox 6.1 / SGI Developer Toolbox 6.1 - Disc 4.iso / documents / RFC / rfc1106.txt < prev    next >
Text File  |  1994-08-01  |  36KB  |  731 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7. Network Working Group                                             R. Fox
  8. Request for Comments:  1106                                       Tandem
  9.                                                                June 1989
  10.  
  11.  
  12.                      TCP Big Window and Nak Options
  13.  
  14. Status of this Memo
  15.  
  16.    This memo discusses two extensions to the TCP protocol to provide a
  17.    more efficient operation over a network with a high bandwidth*delay
  18.    product.  The extensions described in this document have been
  19.    implemented and shown to work using resources at NASA.  This memo
  20.    describes an Experimental Protocol, these extensions are not proposed
  21.    as an Internet standard, but as a starting point for further
  22.    research.  Distribution of this memo is unlimited.
  23.  
  24. Abstract
  25.  
  26.    Two extensions to the TCP protocol are described in this RFC in order
  27.    to provide a more efficient operation over a network with a high
  28.    bandwidth*delay product.  The main issue that still needs to be
  29.    solved is congestion versus noise.  This issue is touched on in this
  30.    memo, but further research is still needed on the applicability of
  31.    the extensions in the Internet as a whole infrastructure and not just
  32.    high bandwidth*delay product networks.  Even with this outstanding
  33.    issue, this document does describe the use of these options in the
  34.    isolated satellite network environment to help facilitate more
  35.    efficient use of this special medium to help off load bulk data
  36.    transfers from links needed for interactive use.
  37.  
  38. 1.  Introduction
  39.  
  40.    Recent work on TCP has shown great performance gains over a variety
  41.    of network paths [1].  However, these changes still do not work well
  42.    over network paths that have a large round trip delay (satellite with
  43.    a 600 ms round trip delay) or a very large bandwidth
  44.    (transcontinental DS3 line).  These two networks exhibit a higher
  45.    bandwidth*delay product, over 10**6 bits, than the 10**5 bits that
  46.    TCP is currently limited to.  This high bandwidth*delay product
  47.    refers to the amount of data that may be unacknowledged so that all
  48.    of the networks bandwidth is being utilized by TCP.  This may also be
  49.    referred to as "filling the pipe" [2] so that the sender of data can
  50.    always put data onto the network and the receiver will always have
  51.    something to read, and neither end of the connection will be forced
  52.    to wait for the other end.
  53.  
  54.    After the last batch of algorithm improvements to TCP, performance
  55.  
  56.  
  57.  
  58. Fox                                                             [Page 1]
  59.  
  60. RFC 1106             TCP Big Window and Nak Options            June 1989
  61.  
  62.  
  63.    over high bandwidth*delay networks is still very poor.  It appears
  64.    that no algorithm changes alone will make any significant
  65.    improvements over high bandwidth*delay networks, but will require an
  66.    extension to the protocol itself.  This RFC discusses two possible
  67.    options to TCP for this purpose.
  68.  
  69.    The two options implemented and discussed in this RFC are:
  70.  
  71.    1.  NAKs
  72.  
  73.       This extension allows the receiver of data to inform the sender
  74.       that a packet of data was not received and needs to be resent.
  75.       This option proves to be useful over any network path (both high
  76.       and low bandwidth*delay type networks) that experiences periodic
  77.       errors such as lost packets, noisy links, or dropped packets due
  78.       to congestion.  The information conveyed by this option is
  79.       advisory and if ignored, does not have any effect on TCP what so
  80.       ever.
  81.  
  82.    2.  Big Windows
  83.  
  84.       This option will give a method of expanding the current 16 bit (64
  85.       Kbytes) TCP window to 32 bits of which 30 bits (over 1 gigabytes)
  86.       are allowed for the receive window.  (The maximum window size
  87.       allowed in TCP due to the requirement of TCP to detect old data
  88.       versus new data.  For a good explanation please see [2].)  No
  89.       changes are required to the standard TCP header [6]. The 16 bit
  90.       field in the TCP header that is used to convey the receive window
  91.       will remain unchanged.  The 32 bit receive window is achieved
  92.       through the use of an option that contains the upper half of the
  93.       window.  It is this option that is necessary to fill large data
  94.       pipes such as a satellite link.
  95.  
  96.    This RFC is broken up into the following sections: section 2 will
  97.    discuss the operation of the NAK option in greater detail, section 3
  98.    will discuss the big window option in greater detail.  Section 4 will
  99.    discuss other effects of the big windows and nak feature when used
  100.    together.  Included in this section will be a brief discussion on the
  101.    effects of congestion versus noise to TCP and possible options for
  102.    satellite networks.  Section 5 will be a conclusion with some hints
  103.    as to what future development may be done at NASA, and then an
  104.    appendix containing some test results is included.
  105.  
  106. 2.  NAK Option
  107.  
  108.    Any packet loss in a high bandwidth*delay network will have a
  109.    catastrophic effect on throughput because of the simple
  110.    acknowledgement of TCP.  TCP always acks the stream of data that has
  111.  
  112.  
  113.  
  114. Fox                                                             [Page 2]
  115.  
  116. RFC 1106             TCP Big Window and Nak Options            June 1989
  117.  
  118.  
  119.    successfully been received and tells the sender the next byte of data
  120.    of the stream that is expected.  If a packet is lost and succeeding
  121.    packets arrive the current protocol has no way of telling the sender
  122.    that it missed one packet but received following packets.  TCP
  123.    currently resends all of the data over again, after a timeout or the
  124.    sender suspects a lost packet due to a duplicate ack algorithm [1],
  125.    until the receiver receives the lost packet and can then ack the lost
  126.    packet as well as succeeding packets received.  On a normal low
  127.    bandwidth*delay network this effect is minimal if the timeout period
  128.    is set short enough.  However, on a long delay network such as a T1
  129.    satellite channel this is catastrophic because by the time the lost
  130.    packet can be sent and the ack returned the TCP window would have
  131.    been exhausted and both the sender and receiver would be temporarily
  132.    stalled waiting for the packet and ack to fully travel the data pipe.
  133.    This causes the pipe to become empty and requires the sender to
  134.    refill the pipe after the ack is received.  This will cause a minimum
  135.    of 3*X bandwidth loss, where X is the one way delay of the medium and
  136.    may be much higher depending on the size of the timeout period and
  137.    bandwidth*delay product.  Its 1X for the packet to be resent, 1X for
  138.    the ack to be received and 1X for the next packet being sent to reach
  139.    the destination.  This calculation assumes that the window size is
  140.    much smaller than the pipe size (window = 1/2 data pipe or 1X), which
  141.    is the typical case with the current TCP window limitation over long
  142.    delay networks such as a T1 satellite link.
  143.  
  144.    An attempt to reduce this wasted bandwidth from 3*X was introduced in
  145.    [1] by having the sender resend a packet after it notices that a
  146.    number of consecutively received acks completely acknowledges already
  147.    acknowledged data.  On a typical network this will reduce the lost
  148.    bandwidth to almost nil, since the packet will be resent before the
  149.    TCP window is exhausted and with the data pipe being much smaller
  150.    than the TCP window, the data pipe will not become empty and no
  151.    bandwidth will be lost.  On a high delay network the reduction of
  152.    lost bandwidth is minimal such that lost bandwidth is still
  153.    significant.  On a very noisy satellite, for instance, the lost
  154.    bandwidth is very high (see appendix for some performance figures)
  155.    and performance is very poor.
  156.  
  157.    There are two methods of informing the sender of lost data.
  158.    Selective acknowledgements and NAKS.  Selective acknowledgements have
  159.    been the object of research in a number of experimental protocols
  160.    including VMTP [3], NETBLT [4], and SatFTP [5].  The idea behind
  161.    selective acks is that the receiver tells the sender which pieces it
  162.    received so that the sender can resend the data not acked but already
  163.    sent once.  NAKs on the other hand, tell the sender that a particular
  164.    packet of data needs to be resent.
  165.  
  166.    There are a couple of disadvantages of selective acks.  Namely, in
  167.  
  168.  
  169.  
  170. Fox                                                             [Page 3]
  171.  
  172. RFC 1106             TCP Big Window and Nak Options            June 1989
  173.  
  174.  
  175.    some of the protocols mentioned above, the receiver waits a certain
  176.    time before sending the selective ack so that acks may be bundled up.
  177.    This delay can cause some wasted bandwidth and requires more complex
  178.    state information than the simple nak.  Even if the receiver doesn't
  179.    bundle up the selective acks but sends them as it notices that
  180.    packets have been lost, more complex state information is needed to
  181.    determine which packets have been acked and which packets need to be
  182.    resent.  With naks, only the immediate data needed to move the left
  183.    edge of the window is naked, thus almost completely eliminating all
  184.    state information.
  185.  
  186.    The selective ack has one advantage over naks.  If the link is very
  187.    noisy and packets are being lost close together, then the sender will
  188.    find out about all of the missing data at once and can send all of
  189.    the missing data out immediately in an attempt to move the left
  190.    window edge in the acknowledge number of the TCP header, thus keeping
  191.    the data pipe flowing.  Whereas with naks, the sender will be
  192.    notified of lost packets one at a time and this will cause the sender
  193.    to process extra packets compared to selective acks.  However,
  194.    empirical studies has shown that most lost packets occur far enough
  195.    apart that the advantage of selective acks over naks is rarely seen.
  196.    Also, if naks are sent out as soon as a packet has been determined
  197.    lost, then the advantage of selective acks becomes no more than
  198.    possibly a more aesthetic algorithm for handling lost data, but
  199.    offers no gains over naks as described in this paper.  It is this
  200.    reason that the simplicity of naks was chosen over selective acks for
  201.    the current implementation.
  202.  
  203. 2.1  Implementation details
  204.  
  205.    When the receiver of data notices a gap between the expected sequence
  206.    number and the actual sequence number of the packet received, the
  207.    receiver can assume that the data between the two sequence numbers is
  208.    either going to arrive late or is lost forever.  Since the receiver
  209.    can not distinguish between the two events a nak should be sent in
  210.    the TCP option field.  Naking a packet still destined to arrive has
  211.    the effect of causing the sender to resend the packet, wasting one
  212.    packets worth of bandwidth.  Since this event is fairly rare, the
  213.    lost bandwidth is insignificant as compared to that of not sending a
  214.    nak when the packet is not going to arrive.  The option will take the
  215.    form as follows:
  216.  
  217.       +========+=========+=========================+================+
  218.       +option= + length= + sequence number of      + number of      +
  219.       +   A    +    7    +  first byte being naked + segments naked +
  220.       +========+=========+=========================+================+
  221.  
  222.    This option contains the first sequence number not received and a
  223.  
  224.  
  225.  
  226. Fox                                                             [Page 4]
  227.  
  228. RFC 1106             TCP Big Window and Nak Options            June 1989
  229.  
  230.  
  231.    count of how many segments of bytes needed to be resent, where
  232.    segments is the size of the current TCP MSS being used for the
  233.    connection.  Since a nak is an advisory piece of information, the
  234.    sending of a nak is unreliable and no means for retransmitting a nak
  235.    is provided at this time.
  236.  
  237.    When the sender of data receives the option it may either choose to
  238.    do nothing or it will resend the missing data immediately and then
  239.    continue sending data where it left off before receiving the nak.
  240.    The receiver will keep track of the last nak sent so that it will not
  241.    repeat the same nak.  If it were to repeat the same nak the protocol
  242.    could get into the mode where on every reception of data the receiver
  243.    would nak the first missing data frame.  Since the data pipe may be
  244.    very large by the time the first nak is read and responded to by the
  245.    sender, many naks would have been sent by the receiver.  Since the
  246.    sender does not know that the naks are repetitious it will resend the
  247.    data each time, thus wasting the network bandwidth with useless
  248.    retransmissions of the same piece of data.  Having an unreliable nak
  249.    may result in a nak being damaged and not being received by the
  250.    sender, and in this case, we will let the tcp recover by its normal
  251.    means.  Empirical data has shown that the likelihood of the nak being
  252.    lost is quite small and thus, this advisory nak option works quite
  253.    well.
  254.  
  255. 3.  Big Window Option
  256.  
  257.    Currently TCP has a 16 bit window limitation built into the protocol.
  258.    This limits the amount of outstanding unacknowledged data to 64
  259.    Kbytes.  We have already seen that some networks have a pipe larger
  260.    than 64 Kbytes.  A T1 satellite channel and a cross country DS3
  261.    network with a 30ms delay have data pipes much larger than 64 Kbytes.
  262.    Thus, even on a perfectly conditioned link with no bandwidth wasted
  263.    due to errors, the data pipe will not be filled and bandwidth will be
  264.    wasted.  What is needed is the ability to send more unacknowledged
  265.    data.  This is achieved by having bigger windows, bigger than the
  266.    current limitation of 16 bits.  This option to expands the window
  267.    size to 30 bits or over 1 gigabytes by literally expanding the window
  268.    size mechanism currently used by TCP.  The added option contains the
  269.    upper 15 bits of the window while the lower 16 bits will continue to
  270.    go where they normally go [6] in the TCP header.
  271.  
  272.    A TCP session will use the big window options only if both sides
  273.    agree to use them, otherwise the option is not used and the normal 16
  274.    bit windows will be used.  Once the 2 sides agree to use the big
  275.    windows then every packet thereafter will be expected to contain the
  276.    window option with the current upper 15 bits of the window.  The
  277.    negotiation to decide whether or not to use the bigger windows takes
  278.    place during the SYN and SYN ACK segments of the TCP connection
  279.  
  280.  
  281.  
  282. Fox                                                             [Page 5]
  283.  
  284. RFC 1106             TCP Big Window and Nak Options            June 1989
  285.  
  286.  
  287.    startup process.  The originator of the connection will include in
  288.    the SYN segment the following option:
  289.  
  290.                     1 byte    1 byte      4 bytes
  291.               +=========+==========+===============+
  292.               +option=B + length=6 + 30 bit window +
  293.               +=========+==========+===============+
  294.  
  295.  
  296.    If the other end of the connection wants to use big windows it will
  297.    include the same option back in the SYN ACK segment that it must
  298.    send.  At this point, both sides have agreed to use big windows and
  299.    the specified windows will be used.  It should be noted that the SYN
  300.    and SYN ACK segments will use the small windows, and once the big
  301.    window option has been negotiated then the bigger windows will be
  302.    used.
  303.  
  304.    Once both sides have agreed to use 32 bit windows the protocol will
  305.    function just as it did before with no difference in operation, even
  306.    in the event of lost packets.  This claim holds true since the
  307.    rcv_wnd and snd_wnd variables of tcp contain the 16 bit windows until
  308.    the big window option is negotiated and then they are replaced with
  309.    the appropriate 32 bit values.  Thus, the use of big windows becomes
  310.    part of the state information kept by TCP.
  311.  
  312.    Other methods of expanding the windows have been presented, including
  313.    a window multiple [2] or streaming [5], but this solution is more
  314.    elegant in the sense that it is a true extension of the window that
  315.    one day may easily become part of the protocol and not just be an
  316.    option to the protocol.
  317.  
  318. 3.1  How does it work
  319.  
  320.    Once a connection has decided to use big windows every succeeding
  321.    packet must contain the following option:
  322.  
  323.         +=========+==========+==========================+
  324.         +option=C + length=4 + upper 15 bits of rcv_wnd +
  325.         +=========+==========+==========================+
  326.  
  327.    With all segments sent, the sender supplies the size of its receive
  328.    window.  If the connection is only using 16 bits then this option is
  329.    not supplied, otherwise the lower 16 bits of the receive window go
  330.    into the tcp header where it currently resides [6] and the upper 15
  331.    bits of the window is put into the data portion of the option C.
  332.    When the receiver processes the packet it must first reform the
  333.    window and then process the packet as it would in the absence of the
  334.    option.
  335.  
  336.  
  337.  
  338. Fox                                                             [Page 6]
  339.  
  340. RFC 1106             TCP Big Window and Nak Options            June 1989
  341.  
  342.  
  343. 3.2  Impact of changes
  344.  
  345.    In implementing the first version of the big window option there was
  346.    very little change required to the source.  State information must be
  347.    added to the protocol to determine if the big window option is to be
  348.    used and all 16 bit variables that dealt with window information must
  349.    now become 32 bit quantities.  A future document will describe in
  350.    more detail the changes required to the 4.3 bsd tcp source code.
  351.    Test results of the window change only are presented in the appendix.
  352.    When expanding 16 bit quantities to 32 bit quantities in the TCP
  353.    control block in the source (4.3 bsd source) may cause the structure
  354.    to become larger than the mbuf used to hold the structure.  Care must
  355.    be taken to insure this doesn't occur with your system or
  356.    undetermined events may take place.
  357.  
  358. 4.  Effects of Big Windows and Naks when used together
  359.  
  360.    With big windows alone, transfer times over a satellite were quite
  361.    impressive with the absence of any introduced errors.  However, when
  362.    an error simulator was used to create random errors during transfers,
  363.    performance went down extremely fast.  When the nak option was added
  364.    to the big window option performance in the face of errors went up
  365.    some but not to the level that was expected.  This section will
  366.    discuss some issues that were overcome to produce the results given
  367.    in the appendix.
  368.  
  369. 4.1  Window Size and Nak benefits
  370.  
  371.    With out errors, the window size required to keep the data pipe full
  372.    is equal to the round trip delay * throughput desired, or the data
  373.    pipe bandwidth (called Z from now on).  This and other calculations
  374.    assume that processing time of the hosts is negligible.  In the event
  375.    of an error (without NAKs), the window size needs to become larger
  376.    than Z in order to keep the data pipe full while the sender is
  377.    waiting for the ack of the resent packet.  If the window size is
  378.    equaled to Z and we assume that the retransmission timer is equaled
  379.    to Z, then when a packet is lost, the retransmission timer will go
  380.    off as the last piece of data in the window is sent.  In this case,
  381.    the lost piece of data can be resent with no delay.  The data pipe
  382.    will empty out because it will take 1/2Z worth of data to get the ack
  383.    back to the sender, an additional 1/2Z worth of data to get the data
  384.    pipe refilled with new data.  This causes the required window to be
  385.    2Z, 1Z to keep the data pipe full during normal operations and 1Z to
  386.    keep the data pipe full while waiting for a lost packet to be resent
  387.    and acked.
  388.  
  389.    If the same scenario in the last paragraph is used with the addition
  390.    of NAKs, the required window size still needs to be 2Z to avoid
  391.  
  392.  
  393.  
  394. Fox                                                             [Page 7]
  395.  
  396. RFC 1106             TCP Big Window and Nak Options            June 1989
  397.  
  398.  
  399.    wasting any bandwidth in the event of a dropped packet.  This appears
  400.    to mean that the nak option does not provide any benefits at all.
  401.    Testing showed that the retransmission timer was larger than the data
  402.    pipe and in the event of errors became much bigger than the data
  403.    pipe, because of the retransmission backoff.  Thus, the nak option
  404.    bounds the required window to 2Z such that in the event of an error
  405.    there is no lost bandwidth, even with the retransmission timer
  406.    fluctuations.  The results in the appendix shows that by using naks,
  407.    bandwidth waste associated with the retransmission timer facility is
  408.    eliminated.
  409.  
  410. 4.2  Congestions vs Noise
  411.  
  412.    An issue that must be looked at when implementing both the NAKs and
  413.    big window scheme together is in the area of congestion versus lost
  414.    packets due to the medium, or noise.  In the recent algorithm
  415.    enhancements [1], slow start was introduced so that whenever a data
  416.    transfer is being started on a connection or right after a dropped
  417.    packet, the effective send window would be set to a very small size
  418.    (typically would equal the MSS being used).  This is done so that a
  419.    new connection would not cause congestion by immediately overloading
  420.    the network, and so that an existing connection would back off the
  421.    network if a packet was dropped due to congestion and allow the
  422.    network to clear up.  If a connection using big windows loses a
  423.    packet due to the medium (a packet corrupted by an error) the last
  424.    thing that should be done is to close the send window so that the
  425.    connection can only send 1 packet and must use the slow start
  426.    algorithm to slowly work itself back up to sending full windows worth
  427.    of data.  This algorithm would quickly limit the usefulness of the
  428.    big window and nak options over lossy links.
  429.  
  430.    On the other hand, if a packet was dropped due to congestion and the
  431.    sender assumes the packet was dropped because of noise the sender
  432.    will continue sending large amounts of data.  This action will cause
  433.    the congestion to continue, more packets will be dropped, and that
  434.    part of the network will collapse.  In this instance, the sender
  435.    would want to back off from sending at the current window limit.
  436.    Using the current slow start mechanism over a satellite builds up the
  437.    window too slowly [1].  Possibly a better solution would be for the
  438.    window to be opened 2*Rlog2(W) instead of R*log2(W) [1] (open window
  439.    by 2 packets instead of 1 for each acked packet).  This will reduce
  440.    the wasted bandwidth by opening the window much quicker while giving
  441.    the network a chance to clear up.  More experimentation is necessary
  442.    to find the optimal rate of opening the window, especially when large
  443.    windows are being used.
  444.  
  445.    The current recommendation for TCP is to use the slow start mechanism
  446.    in the event of any lost packet.  If an application knows that it
  447.  
  448.  
  449.  
  450. Fox                                                             [Page 8]
  451.  
  452. RFC 1106             TCP Big Window and Nak Options            June 1989
  453.  
  454.  
  455.    will be using a satellite with a high error rate, it doesn't make
  456.    sense to force it to use the slow start mechanism for every dropped
  457.    packet.  Instead, the application should be able to choose what
  458.    action should happen in the event of a lost packet.  In the BSD
  459.    environment, a setsockopt call should be provided so that the
  460.    application may inform TCP to handle lost packets in a special way
  461.    for this particular connection.  If the known error rate of a link is
  462.    known to be small, then by using slow start with modified rate from
  463.    above, will cause the amount of bandwidth loss to be very small in
  464.    respect to the amount of bandwidth actually utilized.  In this case,
  465.    the setsockopt call should not be used.  What is really needed is a
  466.    way for a host to determine if a packet or packets are being dropped
  467.    due to congestion or noise.  Then, the host can choose to do the
  468.    right thing.  This will require a mechanism like source quench to be
  469.    used.  For this to happen more experimentation is necessary to
  470.    determine a solid definition on the use of this mechanism.  Now it is
  471.    believed by some that using source quench to avoid congestion only
  472.    adds to the problem, not help suppress it.
  473.  
  474.    The TCP used to gather the results in the appendix for the big window
  475.    with nak experiment, assumed that lost packets were the result of
  476.    noise and not congestion.  This assumption was used to show how to
  477.    make the current TCP work in such an environment.  The actual
  478.    satellite used in the experiment (when the satellite simulator was
  479.    not used) only experienced an error rate around 10e-10.  With this
  480.    error rate it is suggested that in practice when big windows are used
  481.    over the link, TCP should use the slow start mechanism for all lost
  482.    packets with the 2*Rlog2(W) rate discussed above.  Under most
  483.    situations when long delay networks are being used (transcontinental
  484.    DS3 networks using fiber with very low error rates, or satellite
  485.    links with low error rates) big windows and naks should be used with
  486.    the assumption that lost packets are the result of congestion until a
  487.    better algorithm is devised [7].
  488.  
  489.    Another problem noticed, while testing the affects of slow start over
  490.    a satellite link, was at times, the retransmission timer was set so
  491.    restrictive, that milliseconds before a naked packet's ack is
  492.    received the retransmission timer would go off due to a timed packet
  493.    within the send window.  The timer was set at the round trip delay of
  494.    the network allowing no time for packet processing.  If this timer
  495.    went off due to congestion then backing off is the right thing to do,
  496.    otherwise to avoid the scenario discovered by experimentation, the
  497.    transmit timer should be set a little longer so that the
  498.    retransmission timer does not go off too early.  Care must be taken
  499.    to make sure the right thing is done in the implementation in
  500.    question so that a packet isn't retransmitted too soon, and blamed on
  501.    congestion when in fact, the ack is on its way.
  502.  
  503.  
  504.  
  505.  
  506. Fox                                                             [Page 9]
  507.  
  508. RFC 1106             TCP Big Window and Nak Options            June 1989
  509.  
  510.  
  511. 4.3  Duplicate Acks
  512.  
  513.    Another problem found with the 4.3bsd implementation is in the area
  514.    of duplicate acks.  When the sender of data receives a certain number
  515.    of acks (3 in the current Berkeley release) that acknowledge
  516.    previously acked data before, it then assumes that a packet has been
  517.    lost and will resend the one packet assumed lost, and close its send
  518.    window as if the network is congested and the slow start algorithm
  519.    mention above will be used to open the send window.  This facility is
  520.    no longer needed since the sender can use the reception of a nak as
  521.    its indicator that a particular packet was dropped.  If the nak
  522.    packet is lost then the retransmit timer will go off and the packet
  523.    will be retransmitted by normal means.  If a senders algorithm
  524.    continues to count duplicate acks the sender will find itself
  525.    possibly receiving many duplicate acks after it has already resent
  526.    the packet due to a nak being received because of the large size of
  527.    the data pipe.  By receiving all of these duplicate acks the sender
  528.    may find itself doing nothing but resending the same packet of data
  529.    unnecessarily while keeping the send window closed for absolutely no
  530.    reason.  By removing this feature of the implementation a user can
  531.    expect to find a satellite connection working much better in the face
  532.    of errors and other connections should not see any performance loss,
  533.    but a slight improvement in performance if anything at all.
  534.  
  535. 5.  Conclusion
  536.  
  537.    This paper has described two new options that if used will make TCP a
  538.    more efficient protocol in the face of errors and a more efficient
  539.    protocol over networks that have a high bandwidth*delay product
  540.    without decreasing performance over more common networks.  If a
  541.    system that implements the options talks with one that does not, the
  542.    two systems should still be able to communicate with no problems.
  543.    This assumes that the system doesn't use the option numbers defined
  544.    in this paper in some other way or doesn't panic when faced with an
  545.    option that the machine does not implement.  Currently at NASA, there
  546.    are many machines that do not implement either option and communicate
  547.    just fine with the systems that do implement them.
  548.  
  549.    The drive for implementing big windows has been the direct result of
  550.    trying to make TCP more efficient over large delay networks [2,3,4,5]
  551.    such as a T1 satellite.  However, another practical use of large
  552.    windows is becoming more apparent as the local area networks being
  553.    developed are becoming faster and supporting much larger MTU's.
  554.    Hyperchannel, for instances, has been stated to be able to support 1
  555.    Mega bit MTU's in their new line of products.  With the current
  556.    implementation of TCP, efficient use of hyperchannel is not utilized
  557.    as it should because the physical mediums MTU is larger than the
  558.    maximum window of the protocol being used.  By increasing the TCP
  559.  
  560.  
  561.  
  562. Fox                                                            [Page 10]
  563.  
  564. RFC 1106             TCP Big Window and Nak Options            June 1989
  565.  
  566.  
  567.    window size, better utilization of networks like hyperchannel will be
  568.    gained instantly because the sender can send 64 Kbyte packets (IP
  569.    limitation) but not have to operate in a stop and wait fashion.
  570.    Future work is being started to increase the IP maximum datagram size
  571.    so that even better utilization of fast local area networks will be
  572.    seen by having the TCP/IP protocols being able to send large packets
  573.    over mediums with very large MTUs.  This will hopefully, eliminate
  574.    the network protocol as the bottleneck in data transfers while
  575.    workstations and workstation file system technology advances even
  576.    more so, than it already has.
  577.  
  578.    An area of concern when using the big window mechanism is the use of
  579.    machine resources.  When running over a satellite and a packet is
  580.    dropped such that 2Z (where Z is the round trip delay) worth of data
  581.    is unacknowledged, both ends of the connection need to be able to
  582.    buffer the data using machine mbufs (or whatever mechanism the
  583.    machine uses), usually a valuable and scarce commodity.  If the
  584.    window size is not chosen properly, some machines will crash when the
  585.    memory is all used up, or it will keep other parts of the system from
  586.    running.  Thus, setting the window to some fairly large arbitrary
  587.    number is not a good idea, especially on a general purpose machine
  588.    where many users log on at any time.  What is currently being
  589.    engineered at NASA is the ability for certain programs to use the
  590.    setsockopt feature or 4.3bsd asking to use big windows such that the
  591.    average user may not have access to the large windows, thus limiting
  592.    the use of big windows to applications that absolutely need them and
  593.    to protect a valuable system resource.
  594.  
  595. 6.  References
  596.  
  597.   [1]  Jacobson, V., "Congestion Avoidance and Control", SIGCOMM 88,
  598.        Stanford, Ca., August 1988.
  599.  
  600.   [2]  Jacobson, V., and R. Braden, "TCP Extensions for Long-Delay
  601.        Paths", LBL, USC/Information Sciences Institute, RFC 1072,
  602.        October 1988.
  603.  
  604.   [3]  Cheriton, D., "VMTP: Versatile Message Transaction Protocol", RFC
  605.        1045, Stanford University, February 1988.
  606.  
  607.   [4]  Clark, D., M. Lambert, and L. Zhang, "NETBLT: A Bulk Data
  608.        Transfer Protocol", RFC 998, MIT, March 1987.
  609.  
  610.   [5]  Fox, R., "Draft of Proposed Solution for High Delay Circuit File
  611.        Transfer", GE/NAS Internal Document, March 1988.
  612.  
  613.   [6]  Postel, J., "Transmission Control Protocol -  DARPA Internet
  614.        Program Protocol Specification",  RFC 793, DARPA, September 1981.
  615.  
  616.  
  617.  
  618. Fox                                                            [Page 11]
  619.  
  620. RFC 1106             TCP Big Window and Nak Options            June 1989
  621.  
  622.  
  623.   [7]  Leiner, B., "Critical Issues in High Bandwidth Networking", RFC
  624.        1077, DARPA, November 1989.
  625.  
  626. 7.  Appendix
  627.  
  628.    Both options have been implemented and tested.  Contained in this
  629.    section is some performance gathered to support the use of these two
  630.    options.  The satellite channel used was a 1.544 Mbit link with a
  631.    580ms round trip delay.  All values are given as units of bytes.
  632.  
  633.  
  634.    TCP with Big Windows, No Naks:
  635.  
  636.  
  637.                |---------------transfer rates----------------------|
  638.    Window Size |  no error  |  10e-7 error rate | 10e-6 error rate |
  639.    -----------------------------------------------------------------
  640.      64K       |   94K      |      53K          |      14K         |
  641.    -----------------------------------------------------------------
  642.      72K       |   106K     |      51K          |      15K         |
  643.    -----------------------------------------------------------------
  644.      80K       |   115K     |      42K          |      14K         |
  645.    -----------------------------------------------------------------
  646.      92K       |   115K     |      43K          |      14K         |
  647.     -----------------------------------------------------------------
  648.      100K      |   135K     |      66K          |      15K         |
  649.    -----------------------------------------------------------------
  650.      112K      |   126K     |      53K          |      17K         |
  651.    -----------------------------------------------------------------
  652.      124K      |   154K     |      45K          |      14K         |
  653.    -----------------------------------------------------------------
  654.      136K      |   160K     |      66K          |      15K         |
  655.    -----------------------------------------------------------------
  656.      156K      |   167K     |      45K          |      14K         |
  657.    -----------------------------------------------------------------
  658.                                 Figure 1.
  659.  
  660.  
  661.  
  662.  
  663.  
  664.  
  665.  
  666.  
  667.  
  668.  
  669.  
  670.  
  671.  
  672.  
  673.  
  674. Fox                                                            [Page 12]
  675.  
  676. RFC 1106             TCP Big Window and Nak Options            June 1989
  677.  
  678.  
  679.    TCP with Big Windows, and Naks:
  680.  
  681.  
  682.                |---------------transfer rates----------------------|
  683.    Window Size |  no error  |  10e-7 error rate | 10e-6 error rate |
  684.    -----------------------------------------------------------------
  685.      64K       |   95K      |      83K          |      43K         |
  686.    -----------------------------------------------------------------
  687.      72K       |   104K     |      87K          |      49K         |
  688.    -----------------------------------------------------------------
  689.      80K       |   117K     |      96K          |      62K         |
  690.    -----------------------------------------------------------------
  691.      92K       |   124K     |      119K         |      39K         |
  692.    -----------------------------------------------------------------
  693.      100K      |   140K     |      124K         |      35K         |
  694.    -----------------------------------------------------------------
  695.      112K      |   151K     |      126K         |      53K         |
  696.    -----------------------------------------------------------------
  697.      124K      |   160K     |      140K         |      36K         |
  698.    -----------------------------------------------------------------
  699.      136K      |   167K     |      148K         |      38K         |
  700.    -----------------------------------------------------------------
  701.      156K      |   167K     |      160K         |      38K         |
  702.    -----------------------------------------------------------------
  703.                                 Figure 2.
  704.  
  705.    With a 10e-6 error rate, many naks as well as data packets were
  706.    dropped, causing the wild swing in transfer times.  Also, please note
  707.    that the machines used are SGI Iris 2500 Turbos with the 3.6 OS with
  708.    the new TCP enhancements.  The performance associated with the Irises
  709.    are slower than a Sun 3/260, but due to some source code restrictions
  710.    the Iris was used.  Initial results on the Sun showed slightly higher
  711.    performance and less variance.
  712.  
  713. Author's Address
  714.  
  715.    Richard Fox
  716.    950 Linden #208
  717.    Sunnyvale, Cal, 94086
  718.  
  719.    EMail: rfox@tandem.com
  720.  
  721.  
  722.  
  723.  
  724.  
  725.  
  726.  
  727.  
  728.  
  729.  
  730. Fox                                                            [Page 13]
  731.